package org.com.behavioralPattern.templateMethodPattern;

/**
 * @author Jonny
 * @version 1.0
 * @Description:
 * @date 2021/4/15 16:58
 */

/**
 *
 * ■ 封装不变的部分，扩展可变部分。不变的部分封装到父类中实现，而可变的部分则可以通过继承进行扩展。
 * ■ 提取公共部分代码，便于维护。将公共部分的代码抽取出来放在父类中，维护时只需要修改父类中的代码。
 * ■ 行为由父类控制，子类实现。模板方法模式中的基本方法是由子类实现的，因此子类可以通过扩展增加相应的功能，符合开闭原则。
 *
 * ■ 多个子类有公共方法，并且逻辑基本相同时。
 * ■ 可以把重要的、复杂的、核心算法设计为模板方法，周边的相关细节功能则由各个子类实现。
 * ■ 重构时，模板方法模式是一个经常使用的模式，将相同的代码抽取到父类中。
 * 
 */
public class ClientAccount {
    public static void main(String[] args) {
        Account account=new DemandAccount();
        System.out.println("活期利息："+account.calculateInserest());

        account=new FixedAccount();
        System.out.println("定期利息："+account.calculateInserest());
    }
}
